package br.com.vti.sisp_sicrim.antigo.controller.relatorios;

import java.io.FileNotFoundException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sislac01;
import br.com.vti.sisp_sicrim.antigo.model.Sisll001;
import br.com.vti.sisp_sicrim.antigo.util.Relatorios;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela
 * Tabpe111Report
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Tabpe111Report {
	private String nomeClasse;
	private String wnome;
	private String cabecaSeg;
	private String cabecaDet;
	private int dataCorrente;
	private int codtab;
	private String tabela;
	private String diatabDescel; // DB
	private Integer dintabDatapo; // DB
	private String diatabGrupel; // DB
	private Integer dintabMatfun; // DB
	private Integer dintabDatatu; // DB
	private String nroPagina;
	private String horaCorrente;
	private Result result;
	private Sessao sessao;
	private Relatorios report;
	// Classes views
	SicTabelas vwDvetab = new SicTabelas();
	SicTabelas vwTabele = new SicTabelas();
	// Classes includes
	Sislac01 sislac01 = new Sislac01();
	Sisll001 sisll001 = new Sisll001();

	public Tabpe111Report() throws JRException, ParseException {
		inicializar();
	}

	public Tabpe111Report(Sessao sessao) throws JRException, ParseException {
		this.sessao = sessao;
		inicializar();
	}

	public void inicializar() throws JRException, ParseException {
		report = new Relatorios();
		nomeClasse = this.getClass().getSimpleName();
		wnome = "";
		cabecaSeg = "SECRETARIA DE ESTADO DA SEGURAN�A PUBLICA";
		cabecaDet = "SECRETARIA ADJUNTA DE TECNOLOGIA DA INFORMACAO - SEATI";
		dataCorrente = 0;
		codtab = 0;
		tabela = "";
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
		report.setNumeroRel(1, "C");
		{
			report.setNumeroLinhaRel(1, 1);
			{
				report.adicionaCampo(1, 1, "lit_1_1", "C", "", " ");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(2, 3);
			{
				report.adicionaCampo(2, 60, "Cabecaseg", "X", "", "");
				report.adicionaCampo(119, 7, "lit_119_7", "C", "", "PAGINA:");
				report.adicionaCampo(127, 5, "nroPagina", "S", "ZZZZ99", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(3, 2);
			{
				report.adicionaCampo(2, 60, "Cabecadet", "X", "", "");
				report.adicionaCampo(119, 14, "lit_119_14", "C", "", "REL.  TABPE001");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(4, 3);
			{
				report.adicionaCampo(2, 50, "lit_2_50", "C", "", "SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA - SISP");
				report.adicionaCampo(117, 5, "lit_117_5", "C", "", "DATA:");
				report.adicionaCampo(123, 8, "dataCorrente", "N", "99/99/9999", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(5, 4);
			{
				report.adicionaCampo(2, 39, "lit_2_39", "C", "", "EMISSAO DO CADASTRO DE APOIO ==> TABELA");
				report.adicionaCampo(42, 3, "Codtab", "N", "Z99", "");
				report.adicionaCampo(46, 54, "Tabela", "X", "", "");
				report.adicionaCampo(124, 7, "lit_124_7", "C", "", "       ");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(6, 1);
			{
				report.adicionaCampo(1, 1, "lit_1_1", "C", "", "-");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(7, 5);
			{
				report.adicionaCampo(2, 12, "lit_2_12", "C", "", "nome        ");
				report.adicionaCampo(37, 9, "lit_37_9", "C", "", "DESCRICAO");
				report.adicionaCampo(104, 5, "lit_104_5", "C", "", "GRUPO");
				report.adicionaCampo(113, 7, "lit_113_7", "C", "", "MATRIC.");
				report.adicionaCampo(124, 8, "lit_124_8", "C", "", "ATUALIZ.");
				report.setFimLinhaRel();
			}
		}
		report.setNumeroRel(2, "D");
		{
			report.setNumeroLinhaRel(1, 6);
			{
				report.adicionaCampo(1, 35, "Wnome", "X", "", "");
				report.adicionaCampo(37, 60, "Diatabdescel", "X", "", "");
				report.adicionaCampo(98, 8, "Dintabdatapo", "N", "", "");
				report.adicionaCampo(108, 1, "Diatabgrupel", "X", "", "");
				report.adicionaCampo(113, 7, "Dintabmatfun", "N", "", "");
				report.adicionaCampo(122, 8, "Dintabdatatu", "N", "99/99/9999", "");
				report.setFimLinhaRel();
			}
		}
		setCabecaseg(cabecaSeg);
		setCabecadet(cabecaDet);
	}

	public boolean validar() {
		return true;
	}

	public String getNomeClasse() {
		return nomeClasse;
	}

	public void setNomeClasse(String nomeClasse) throws ParseException {
		this.nomeClasse = nomeClasse;
		report.adicionaValorReport("Program", nomeClasse);
	}

	public String getWnome() {
		return wnome;
	}

	public void setWnome(String wnome) throws ParseException {
		this.wnome = wnome;
		report.adicionaValorReport("Wnome", wnome);
	}

	public String getCabecaseg() {
		return cabecaSeg;
	}

	public void setCabecaseg(String cabecaSeg) throws ParseException {
		this.cabecaSeg = cabecaSeg;
		report.adicionaValorReport("Cabecaseg", cabecaSeg);
	}

	public String getCabecadet() {
		return cabecaDet;
	}

	public void setCabecadet(String cabecaDet) throws ParseException {
		this.cabecaDet = cabecaDet;
		report.adicionaValorReport("Cabecadet", cabecaDet);
	}

	public int getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(int dataCorrente) throws ParseException {
		this.dataCorrente = dataCorrente;
		report.adicionaValorReport("dataCorrente", dataCorrente);
	}

	public int getCodtab() {
		return codtab;
	}

	public void setCodtab(int codtab) throws ParseException {
		this.codtab = codtab;
		report.adicionaValorReport("Codtab", codtab);
	}

	public String getTabela() {
		return tabela;
	}

	public void setTabela(String tabela) throws ParseException {
		this.tabela = tabela;
		report.adicionaValorReport("Tabela", tabela);
	}

	public String getNroPagina() {
		return nroPagina;
	}

	public void setNroPagina(String nroPagina) throws ParseException {
		this.nroPagina = nroPagina;
		report.adicionaValorReport("nroPagina", nroPagina);
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) throws ParseException {
		this.horaCorrente = horaCorrente;
		report.adicionaValorReport("horaCorrente", horaCorrente);
	}

	public void setPageSize(int pagesize) throws JRException {
		report.setPageSize(pagesize);
	}

	public void setLineSize(int linesize) {
		report.setLineSize(linesize);
	}

	public int getPageSize() {
		return report.getPageSize();
	}

	public int getPageLine() {
		return report.getPageLine();
	}

	public void saltaLinhas(int qtdLinhas) throws ParseException, JRException {
		report.saltaLinhas(qtdLinhas);
	}

	public void gravaRelatorio(int nroRel) throws ParseException, JRException {
		setNroPagina(String.valueOf(report.getPageNumber()));
		report.gravaRelatorio(report, nroRel, false);
	}

	public void imprimir() throws FileNotFoundException, JRException {
		report.imprimir();
	}

	public String getDiatabDescel() {
		return diatabDescel;
	}

	public void setDiatabDescel(String diatabDescel) throws ParseException {
		this.diatabDescel = diatabDescel;
		report.adicionaValorReport("diatabDescel", diatabDescel);
	}

	public Integer getDintabDatapo() {
		return dintabDatapo;
	}

	public void setDintabDatapo(Integer dintabDatapo) throws ParseException {
		this.dintabDatapo = dintabDatapo;
		report.adicionaValorReport("dintabDatapo", dintabDatapo);
	}

	public String getDiatabGrupel() {
		return diatabGrupel;
	}

	public void setDiatabGrupel(String diatabGrupel) throws ParseException {
		this.diatabGrupel = diatabGrupel;
		report.adicionaValorReport("diatabGrupel", diatabGrupel);
	}

	public Integer getDintabMatfun() {
		return dintabMatfun;
	}

	public void setDintabMatfun(Integer dintabMatfun) throws ParseException {
		this.dintabMatfun = dintabMatfun;
		report.adicionaValorReport("dintabMatfun", dintabMatfun);
	}

	public Integer getDintabDatatu() {
		return dintabDatatu;
	}

	public void setDintabDatatu(Integer dintabDatatu) throws ParseException {
		this.dintabDatatu = dintabDatatu;
		report.adicionaValorReport("dintabDatatu", dintabDatatu);
	}

}
